#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,m,sv,name[1100];
char servers[1100][50];
bool check(char str[]){
	int s=-1,c1=0,c2=0,sum=0;
	for(int i=0;i<strlen(str);i++){
		//cout<<s<<" "<<sum<<endl;
		if('0'<=str[i]&&str[i]<='9'){
			if(s==-1){ s=0; }
			s*=10;
			s+=str[i]-'0';
			//cout<<s<<" "<<sum<<endl;
			if(sum<4){
				if(0>s||s>255){
					return false;
				}
			}
			else if(sum==4){
				if(0>s||s>65535){
					return false;
				}
			}
				
		}else{
			if(s==-1){
				return false;
			}
			if(str[i]=='.'){
				c1++;
			}else if(str[i]==':'){
				c2++;
			}
			if(c1>3||c2>1||c1<3&&c2==1){
				return false;
			}
			sum++;
			s=-1;
		}
	}
	return true;
}
bool fun(char str1[],char str2[]){
	if(strlen(str1)!=strlen(str2)){//cout<<strlen(str1)<<" "<<strlen(str2)<<"|";
		return false;
	}
	for(int i=0;i<strlen(str1);i++){
		if(str1[i]!=str2[i]){
			return false;
		}
	}
	return true;
}
bool search(char str[]){
	for(int i=0;i<m;i++){
		if(fun(str,servers[i])){
			sv=name[i];
			return true;
		}
	}
	return false;
}
void add(char str[]){
	for(int i=0;i<strlen(str);i++) servers[m][i]=str[i];
	//cout<<strlen(servers[m])<<"||";
	m++;
}
int main(){
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	scanf("%d",&n);
	char str[50];
	for(int i=1;i<=n;i++){
		cin>>str;
		//cout<<str;
		if(str[0]=='S'){
			cin>>str;
			if(!check(str)){
				printf("ERR\n");
				continue;
			}
			if(search(str)){
				printf("FAIL\n");
				continue;
			}
			name[m]=i;
			add(str);
			printf("OK\n");
		}else{
			cin>>str;
			//cout<<"C "<<str;
			if(!check(str)){
				printf("ERR\n");
				continue;
			}
			if(search(str)){
				printf("%d\n",sv);
			}else{
				printf("FAIL\n");
			}
		}
	}
	return 0;
	//test
	/*
	for(int i=0;i<m;i++){
		cout<<"?";
		cout<<servers[i]<<endl;
	}
	*/
	//
}
